home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1993
/
Internet Info CD-ROM (Walnut Creek) (1993).iso
/
inet
/
internet-drafts
/
draft-moore-mime-references-00.txt
< prev
next >
Wrap
Text File
|
1993-10-26
|
14KB
|
369 lines
Network Working Group Keith Moore
Internet Draft University of Tennessee
24 October 1993
Multipart/References MIME Content-Type
draft-moore-mime-references-00.txt
1. Status of this Memo
This document is an Internet Draft. Internet Drafts are working
documents of the Internet Engineering Task Force (IETF), its Areas, and
its Working Groups. Note that other groups may also distribute working
documents as Internet Drafts.
Internet Drafts are valid for a maximum of six months and may be
updated, replaced, or obsoleted by other documents at any time. (The
file 1id-abstracts.txt, available via anonymous ftp from nic.ddn.mil,
describes the current status of each Internet Draft.) It is not
appropriate to use Internet Drafts as reference material or to cite them
other than as "work in progress".
2. Abstract
This memo defines a new MIME content-type "multipart/references",
which can be used to denote a set of MIME contents, of which any one may
reference the others by its MIME content-id. This mechanism may be used
by presentation languages that wish to be able to reference MIME
objects, or by other applications (file transfer, authentication,
delivery reports) which need to supply related information about another
MIME object.
3. Introduction
Several new MIME [1] -based applications are being developed which
require data that is best represented (within a MIME message) as
multiple MIME body parts. Frequently, such applications simply need to
"embellish" or provide additional information about one or more other
objects, which themselves are naturally represented as MIME body parts.
Examples of such applications include the following:
+ File transfer. When using MIME to transfer a file, it is useful to
represent the file being transferred as a MIME body part (with
appropriate MIME content-type labelling), and provide additional
information (ownership, creation date, permissions, icon, or data
specific to a particular system) in a separate body part. A MIME
mail reader could present the contents of the file being
transferred in addition to offering to store the file on the
recipient's file system.
K. Moore Expires 24 April 1994 [Page 1]
Multipart/References 24 October 1993
+ Authentication. A separate body part could be used as a
certificate of authorship and integrity check, using protocols such
as PEM [2,3,4,5].
+ Delivery and receipt notifications. A delivery status notification
(or receipt notification) may include both the original message,
and a separate body part indicating why the delivery of the message
failed. The mechanism defined in this memo could be used to
illustrate the relationship between the two.
+ Hypertext systems. It may be desirable to transmit a set of
hypertext documents which reference one another, in a single MIME
message.
+ Presentation languages. Since MIME says little about how the
objects it carries are to be presented, this extension may be used
by presentation languages that wish to reference other MIME
objects.
Although MIME [5] defines a content-id header which can be used for
this purpose, it provides no mechanism by which one body part can
reference another. Neither does it provide a mechanism to indicate
whether a particular body part should be presented by a mail reader,
stored in a file (as in an attachment), or whether the body part is
intended to be referenced by another body part.
This memo thus defines:
+ a "multipart/references" content-type to be used to indicate a set
of body parts that may reference one another.
+ a new "internal" access-type for the message/external-body content-
type, which instructs the mail reader to present another body part
contained within the same multipart/references content. (This is
intended to be used within multipart/alternative, as a fallback for
when better presentation languages are not supported.)
4. The Multipart/References Content-Type
The Multipart/References Content-Type is defined as follows:
MIME type name: multipart
MIME subtype name: references
Required parameters: start
Optional parameters: none
Encoding considerations: No content-transfer-encoding may be used.
Security considerations: none
NOTE IN DRAFT: this content-type needs a better name. Suggestions
are welcome!
K. Moore Expires 24 April 1994 [Page 2]
Multipart/References 24 October 1993
The "start" parameter contains the content-id of one of the immediate
children of the multipart/references body part being defined (without
the enclosing '<' and '>'). It indicates to the mail reader which of
the components of the multipart/references should be presented.
When presenting a multipart/references body part, the mail reader
first scans all of the components contained within. Then it presents
the component whose content-id is indicated by the "start" parameter.
The "start" component may then reference other body parts contained
within the same, or an enclosing, multipart/references body part. If an
external program is responsible for presenting the "start" body part,
the mail reader will run it in an environment from which it can obtain
the other body parts (and associated headers) by using their content-id.
Any component of a multipart/references body part (not just the
"start" component) may reference any other component within the same (or
an enclosing) multipart/references body part. (The module charged with
presenting the "start" component may cause other components of the
multipart/references body part to be presented, which themselves
reference other body parts.)
Other than storing the information associated with each component of
a multipart/references body part to allow for later retrival, and
undoing any content-transfer-encoding applied to the component, no
processing is performed on any of the components, before presenting the
"start" component.
NOTE: This includes any "composite" content-types such as multipart,
message/external-body, or message/rfc822. If such objects are
referenced by other components, they will obtain the original headers
and/or (decoded) body comprising the multipart, message/external-
body, or message/rfc822 body part. The individual components or sub-
components of a composite CANNOT be directly referenced by another
body part, unless it first parses the components.
A component of a multipart/references body part need not include a
content-id header. However, without such a header, there is no way for
it to either be the "distinguished" component, or to be refernced by
another component. Such components will only be presented by a mail
reader that does not implement this specification.
5. The "internal" Access-Type for Message/External-Body
A new access-type is defined for the MIME Message/External-Body
content-type. The "internal" access-type indicates that the actual body
of this particular message/external-body body part, should be obtained
from another body part contained within an enclosing
multipart/references body part. The mandantory parameter for this
access-type is:
K. Moore Expires 24 April 1994 [Page 3]
Multipart/References 24 October 1993
CONTENT-ID -- the content-id of the body part being referenced
The value associated with the content-id parameter should NOT include
the enclosing '<' and '>' required by the content-id body part header.
NOTE IN DRAFT: alternatives for the name "internal" are also solicited!
When the internal access-type is used, the headers that appear in the
body of the message/external-body part will normally be similar to the
body part headers that appear with the referenced body part. However,
the headers need not be the identical, since it may be desirable to
present the object slightly differently under different conditions. In
any case, when a message/external-body body part is presented, the
headers appearing in the body of the message/external-body body part are
used, rather than those of the referenced body part.
The "internal" access type is designed to allow "fallback" access to one
or more components of a multipart/references body part. For example, a
hypothetical application/foo body part might reference other body parts
A, B, and C. If the recipient's mail reader doesn't support
application/foo, the sender might want her to see A, B, and C anyway.
So the message could be constructed as follows. (In this example, A, B,
C, and D are the content-ids of the components of the
multipart/references body part.)
multipart/references ; start=D {
A: [body-part-A]
B: [body-part-B]
C: [body-part-C]
D: multipart/alternative {
application/foo (which references A, B, and C internally)
multipart/mixed
message/external-body; access-type=internal; content-id=A
message/external-body; access-type=internal; content-id=B
message/external-body; access-type=internal; content-id=C
}
}
6. Security considerations
Security considerations are not discussed in this memo.
7. Acknowledgements
This proposal is an amalgam resulting from ideas presented in several
other approaches to this problem, including Harald Tveit Alvestrand's
"multipart/related", Dave Crocker's "multipart/header-set", and Rens
Troost's "content-disposition" documents. (There are probably others
K. Moore Expires 24 April 1994 [Page 4]
Multipart/References 24 October 1993
that I don't recall at the moment.) Discussion on the ietf-822 and
info-metamail mailing lists has helped to define the requirements for
this proposal.
8. References
[1] N. Borenstein, N. Freed, "MIME (Multipurpose Internet Mail
Extensions) Part One: Mechanisms for Specifying and Describing the
Format of Internet Message Bodies", RFC 1521, September 23 1993.
[2] J. Linn, "Privacy Enhancement for Internet Electronic Mail: Part
I: Message Encryption and Authentication Procedures". RFC 1421,
February 10 1993.
[3] S. Kent, "Privacy Enhancement for Internet Electronic Mail: Part
II: Certificate-Based Key Management", RFC 1422, February 10 1993.
[4] D. Balenson, "Privacy Enhancement for Internet Electronic Mail:
Part III: Algorithms, Modes, and Identifiers", RFC 1423, February
10 1993.
[5] B. Kaliski, "Privacy Enhancement for Internet Electronic Mail: Part
IV: Key Certification and Related Services", RFC 1424, Febryary 10,
1993.
9. Author's address
Keith Moore
University of Tennessee
107 Ayres Hall
Knoxville, TN 37996-1301
USA
email: moore@cs.utk.edu
K. Moore Expires 24 April 1994 [Page 5]
Multipart/References 24 October 1993
Appendix. Implementation suggestion
This proposal requires that the "modules" responsible for presenting a
body part be able to reference other body parts. The mechanisms by
which this might be done vary considerably from one system to another
(e.g. logical names on VMS, shared file descriptors on UNIX). Because
dissimilar systems often share code nowadays, there is some advantage in
having a system-independent way to provide such access. Here is a
suggestion for how this might be done in a relatively painless manner.
When a mail reader encounters a multipart/references body part, it
proceeds to scan each of the components. Each component's headers are
stored in a temporary file, and the body part (after undoing any
content-transfer-encoding) is stored in a separate temporary file. The
names of the files are based on the content-id of the body part being
stored.
Since content-IDs may contain special characters not allowed in a file
name, or may be longer than the length of a file name, they may be
mapped into legal file names as follows:
1. Remove the '<' and '>' enclosing the content-id.
2. Apply the MD5 digest algorithm (see RFC 1321) to the result.
3. Separate the resulting 128-bit digest into four groups of 32 bits
each, and exclusive-or together all four groups, producing a 32-bit
result.
4. Encode the resulting 32-bit quantity as 8 hexadecimal, upper case
characters.
5. If necessary, truncate the resulting character string so that it fits
within the limits of the local file system (leaving room for a four
character filename suffix).
6. Append the string ".HDR" to produce the filename to contain the
header, and ".BDY" for the filename to contain the body part.
7. The calling program should remove the temporary files after the sub-
program completes its work.
The author hopes this method will be sufficient for any modern file
system. File name collisions are presumed to be unlikely, but paranoid
implementors might want to modify the filename suffix should collisions
occur.
An application programmer's interface should be provided to handle the
details of translating file names and manipulating the resulting files.
Such an interface could also be extended "underneath" to provide more
efficient access where the operating system supports it, e.g. by sharing
memory between processes.
K. Moore Expires 24 April 1994 [Page 6]